<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script type="text/javascript">
/* 
一.JS中的三种逻辑运算符：
1.逻辑非 ！
  1.对布尔值进行逻辑运算，true变false，false变true
  2.对一个值进行两次非运算，值不变
  3.对非布尔值进行非运算，会将其先变成布尔值，再取反
    3.1我们可以根据这一原理，将别的类型转换为布尔型：就是对别的数据类型进行两次非操作，原理其实跟Boolean()相同
2.逻辑与：&&
  1.布尔类型进行与运算时：两边都是true，结果为true;只要有一个false结果就为false
  2.JS中的“与”属于短路与：第一个值为false，则不会看第二个值
3.逻辑或：||
  1.两个值中只要有一个true，就返回true;如果两个值都为false，才返回false
  2.JS中的“或”属于短路或：只要第一个值为true,则不会看第二个值
二.非布尔值的与或运算
  1.与运算
    1.1非布尔值的与运算：先将非布尔值转换为布尔值，再进行运算，最后返回原值
    1.2 如果第一个值是true，则返回第二个值
    1.3 如果左右两边的结果有一个false，则返回前一个false的值 
  2.或运算
   2.1如果第一个值是true，则返回第一个值
   2.2 如果第一个值是false，则返回第二个值   
*/
//短路与
//true&& alert("我弹出来了！");
//false&&alert("我弹不出来了！");
/* 
//非布尔值的逻辑与
console.log(1&&2);//2
console.log(2&&0);//0
console.log(NaN&&5);//NaN
console.log(""&&6);//"" 

*/
//非布尔值的逻辑或
console.log(2||0);//2
console.log(NaN||2);//2
console.log(NaN||0);//0
  </script>
</head>
<body>
  
</body>
</html>
